Make auto-composition work on all buffers even if they are fundamental mode.
authorKenichi Handa <handa@m17n.org>
Thu, 14 Jan 2010 03:44:36 +0000 (12:44 +0900)
committerKenichi Handa <handa@m17n.org>
Thu, 14 Jan 2010 03:44:36 +0000 (12:44 +0900)
1  2 
etc/ChangeLog
etc/NEWS
lisp/ChangeLog
lisp/composite.el
src/ChangeLog
src/composite.c

diff --cc etc/ChangeLog
index f1b38186f9d4121430e8ba990a2df6b5a4da60a9,f1b38186f9d4121430e8ba990a2df6b5a4da60a9..5a54cada2f5d9ce800e857da41127732d57acd13
@@@ -1,3 -1,3 +1,7 @@@
++2010-01-14  Kenichi Handa  <handa@m17n.org>
++
++      * NEWS: Describe the change of auto-composition-mode.
++
  2010-01-12  Glenn Morris  <rgm@gnu.org>
  
        * CONTRIBUTE, NEWS: Use bug-gnu-emacs rather than emacs-pretest-bug
diff --cc etc/NEWS
index 3b4faf099ce0aa00e10c85557eda1816fd6c1447,3b4faf099ce0aa00e10c85557eda1816fd6c1447..cd5b9a82d3201026fda9c3aa259ff1ee333691f3
+++ b/etc/NEWS
@@@ -122,6 -122,6 +122,11 @@@ international/ucs-normalize.el
  ** Function arguments in *Help* buffers are now shown in upper-case.
  Customize `help-downcase-arguments' to t to show them in lower-case.
  
++** Delete Auto Composition Mode.  Now the variable
++`auto-composition-mode' is simply a buffer local variable.  The
++commands `auto-composition-mode' and `global-auto-composition-mode'
++still works as before.
++
  \f
  * Editing Changes in Emacs 23.2
  
diff --cc lisp/ChangeLog
index b9cd340f998bd7a4e606bfc23479ceda6e052b48,b9cd340f998bd7a4e606bfc23479ceda6e052b48..cf28cd6dfdefe0fb31117c7dfbd16b9502306f2c
@@@ -1,3 -1,3 +1,14 @@@
++2010-01-14  Kenichi Handa  <handa@m17n.org>
++
++      * composite.el (auto-composition-mode): Make it a buffer local
++      variable (permanent-local).
++      (auto-composition-function): Set the default value to
++      auto-compose-chars.
++      (auto-composition-mode): Make it a simple function, not a minor
++      mode.
++      (global-auto-composition-mode): Likewise.
++      (turn-on-auto-composition-if-enabled): Delete it.
++
  2010-01-12  Michael Albinus  <michael.albinus@gmx.de>
  
        * files.el (copy-directory): Compute target for recursive
index ce7ea95800b9cc039f6d8ca51ba110efee135239,ce7ea95800b9cc039f6d8ca51ba110efee135239..4e91945b1b6d6ac9712c19a43a53eed2e1041469
@@@ -744,10 -744,10 +744,14 @@@ This function is the default value of `
          (setq func 'compose-gstring-for-terminal))
        (funcall func gstring))))
  
++(make-variable-buffer-local 'auto-composition-mode)
++(put 'auto-composition-mode 'permanent-local t)
++
  (make-variable-buffer-local 'auto-composition-function)
++(setq-default auto-composition-function 'auto-compose-chars)
  
  ;;;###autoload
--(define-minor-mode auto-composition-mode
++(defun auto-composition-mode (&optional arg)
    "Toggle Auto Composition mode.
  With ARG, turn Auto Composition mode off if and only if ARG is a non-positive
  number; if ARG is nil, toggle Auto Composition mode; anything else turns Auto
@@@ -758,29 -758,29 +762,23 @@@ by functions registered in `composition
  
  You can use `global-auto-composition-mode' to turn on
  Auto Composition mode in all buffers (this is the default)."
--  nil nil nil
--  (if noninteractive
--      (setq auto-composition-mode nil))
--  (cond (auto-composition-mode
--       (setq auto-composition-function 'auto-compose-chars))
--      (t
--       (setq auto-composition-function nil))))
--
--(defun turn-on-auto-composition-if-enabled ()
--  (if enable-multibyte-characters
--      (auto-composition-mode 1)))
++  (interactive "P")
++  (setq auto-composition-mode
++      (if arg
++          (or (not (integerp arg)) (> arg 0))
++        (not auto-composition-mode))))
  
  ;;;###autoload
--(define-global-minor-mode global-auto-composition-mode
--  auto-composition-mode turn-on-auto-composition-if-enabled
--  ;; This :extra-args' appears to be the result of a naive copy&paste
--  ;; from global-font-lock-mode.
--  ;; :extra-args (dummy)
--  :initialize 'custom-initialize-delay
--  :init-value (not noninteractive)
--  :group 'auto-composition
--  :version "23.1")
--
++(defun global-auto-composition-mode (&optional arg)
++  "Toggle Auto-Composition mode in every possible buffer.
++With prefix arg, turn Global-Auto-Composition mode on if and only if arg
++is positive.
++See `auto-composition-mode' for more information on Auto-Composition mode."
++  (interactive "P")
++  (setq-default auto-composition-mode
++              (if arg
++                  (or (not (integerp arg)) (> arg 0))
++                (not (default-value 'auto-composition-mode)))))
  (defalias 'toggle-auto-composition 'auto-composition-mode)
  
  \f
diff --cc src/ChangeLog
index 2642888113c9302714e217262e4b03d22abd6479,2642888113c9302714e217262e4b03d22abd6479..2ef9ea9eb5a20b52c41e69056628f00365a442e7
@@@ -1,3 -1,3 +1,15 @@@
++2010-01-14  Kenichi Handa  <handa@m17n.org>
++
++      Make auto-composition work on all buffers even if they are
++      fundamental mode.
++
++      * composite.c (Vauto_composition_mode): New variable.
++      (composition_compute_stop_pos): Check Vauto_composition_mode
++      instead of Vauto_composition_function.
++      (composition_adjust_point, Ffind_composition_internal): Likewise.
++      (syms_of_composite): Declare Lisp variable
++      "auto-composition-mode" here.
++
  2010-01-13  Kenichi Handa  <handa@m17n.org>
  
        Display buffer name, etc. in mode line by composing correctly.
diff --cc src/composite.c
index edebf1e3136d831cdcbc489c287a0c8276cca5a7,edebf1e3136d831cdcbc489c287a0c8276cca5a7..3c2bf409eedaf2e287c1b258b551fa4de84c7a9c
@@@ -157,6 -157,6 +157,7 @@@ Lisp_Object composition_hash_table
  Lisp_Object Vcompose_chars_after_function;
  
  Lisp_Object Qauto_composed;
++Lisp_Object Vauto_composition_mode;
  Lisp_Object Vauto_composition_function;
  Lisp_Object Qauto_composition_function;
  Lisp_Object Vcomposition_function_table;
@@@ -1039,7 -1039,7 +1040,7 @@@ composition_compute_stop_pos (cmp_it, c
    if (NILP (string) && PT > charpos && PT < endpos)
      cmp_it->stop_pos = PT;
    if (NILP (current_buffer->enable_multibyte_characters)
--      || ! FUNCTIONP (Vauto_composition_function))
++      || NILP (Vauto_composition_mode))
      return;
    if (bytepos < 0)
      {
@@@ -1478,7 -1478,7 +1479,7 @@@ composition_adjust_point (last_pt, new_
      }
  
    if (NILP (current_buffer->enable_multibyte_characters)
--      || ! FUNCTIONP (Vauto_composition_function))
++      || NILP (Vauto_composition_mode))
      return new_pt;
  
    /* Next check the automatic composition.  */
@@@ -1661,7 -1661,7 +1662,7 @@@ See `find-composition' for more details
    if (!find_composition (from, to, &start, &end, &prop, string))
      {
        if (!NILP (current_buffer->enable_multibyte_characters)
--        && FUNCTIONP (Vauto_composition_function)
++        && ! NILP (Vauto_composition_mode)
          && find_automatic_composition (from, to, &start, &end, &gstring,
                                         string))
        return list3 (make_number (start), make_number (end), gstring);
@@@ -1788,6 -1788,6 +1789,11 @@@ The default value is the function `comp
    Qauto_composition_function = intern_c_string ("auto-composition-function");
    staticpro (&Qauto_composition_function);
  
++  DEFVAR_LISP ("auto-composition-mode", &Vauto_composition_mode,
++             doc: /* Non-nil if Auto-Composition mode is enabled.
++Use the command `auto-composition-mode' to change this variable. */);
++  Vauto_composition_mode = Qt;
++
    DEFVAR_LISP ("auto-composition-function", &Vauto_composition_function,
               doc: /* Function to call to compose characters automatically.
  This function is called from the display routine with four arguments: